package com.eystar.ext.plugin.crate;

import java.io.File;
import java.io.FileFilter;
import java.util.List;

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.DbKit;
import com.jfinal.plugin.activerecord.IDataSourceProvider;
import com.jfinal.template.source.FileSourceFactory;

import cn.hutool.core.io.FileUtil;

public class CratePlugin extends ActiveRecordPlugin {
	
	/**
	 * Crate插件构造函数，需要传入数据源名称<br>
	 * 添加: zhangjian - 2019年10月11日 下午3:51:10<br>
	 * 修改: zhangjian - 2019年10月11日 下午3:51:10<br>
	 * @param dataSource
	 */
	public CratePlugin(IDataSourceProvider dataSourceProvider) {
		this(DbKit.MAIN_CONFIG_NAME, dataSourceProvider);
	}

	/**
	 * Crate插件构造函数，需要传入配置名称和数据源名称<br>
	 * 添加: zhangjian - 2019年10月11日 下午3:48:24<br>
	 * 修改: zhangjian - 2019年10月11日 下午3:48:24<br>
	 * @param configName
	 * @param dataSource
	 */
	public CratePlugin(String configName, IDataSourceProvider dataSourceProvider) {
		super(configName, dataSourceProvider);
	}

	/**
	 * Crate插件启动<br>
	 * 添加: zhangjian - 2019年10月11日 下午3:49:59<br>
	 * 修改: zhangjian - 2019年10月11日 下午3:49:59<br>
	 * @return
	 * @see com.jfinal.plugin.activerecord.ActiveRecordPlugin#start()
	 */
	@Override
	public boolean start() {
		getEngine().setSourceFactory(new FileSourceFactory());
        List<File> sqlFiles = FileUtil.loopFiles(new File(PathKit.getRootClassPath()), new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				if(FileUtil.pathEndsWith(pathname, "sql")) {
					return true;
				}
				return false;
			}
		});
        for (File file : sqlFiles) {
        	addSqlTemplate(file.getAbsolutePath());
		}
		return super.start();
	}

	/**
	 * Crate插件停止<br>
	 * 添加: zhangjian - 2019年10月11日 下午3:52:38<br>
	 * 修改: zhangjian - 2019年10月11日 下午3:52:38<br>
	 * @return
	 * @see com.jfinal.plugin.activerecord.ActiveRecordPlugin#stop()
	 */
	@Override
	public boolean stop() {
		return super.stop();
	}

}
